package com.qf.filters;

import com.qf.cache.BlackNumLocalCache;
import com.qf.service.SendReportService;
import com.qianfeng.smsplatform.common.constants.InterfaceExceptionDict;
import com.qianfeng.smsplatform.common.model.Standard_Report;
import com.qianfeng.smsplatform.common.model.Standard_Submit;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Component;

/*
 * @Data: 2021/7/15 20:49
 * */
@Component
public class BlackFilterWithLocalCache implements FiltersChain {


    @Override
    public boolean dealSms(Standard_Submit submit) {

//        获取手机号
        String destMobile = submit.getDestMobile();
//       判断手机号是否在本地集合中
        Boolean result = BlackNumLocalCache.ismembers(destMobile);
        System.out.println("result"+result);

        if(result){
            System.out.println(destMobile+"在黑名单");
/*//            应该拦截并通知客户有一个手机号在黑名单中
//            要通知客户 需要接口模块来做做事  所以我们现在只需要将结果通知到接口模块

            //      敏感词应该通知客户
                Standard_Report report=new Standard_Report();
                report.setClientID(submit.getClientID());
                report.setSrcID(submit.getSrcSequenceId());
                report.setState(2);
//                该手机号在 黑名单中
                report.setDescription(destMobile);
                report.setMobile(submit.getDestMobile());
                report.setErrorCode(InterfaceExceptionDict.RETURN_STATUS_BLACK_ERROR);
//       第几次推送   我们告诉客户结果 中间可能因为网络原因 没推送到  我们需要重试    但是又不是无限制重试  我们可以设置一个阈值
                report.setSendCount(1);
//          发送给客户
            System.out.println("准备发送给接口  黑名单");
                sendReportService.sendSmsReport(report);*/
                //todo 保存在自己的数据中   比如es
            submit.setReportState(2);
//            错误码
            submit.setErrorCode(InterfaceExceptionDict.RETURN_STATUS_BLACK_ERROR);
//            黑名单的错误的手机号 信息
            submit.setDescription(destMobile);

            }
        else {
        System.err.println(destMobile + "========>不不不不不不不在黑名单中set");
        return true;
        }
        return false;
}}
